package com.quick.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.quick.base.BaseTree;
import com.quick.base.Page;
import com.quick.base.Search;
import com.quick.sys.domain.dto.SysMenuDTO;
import com.quick.sys.domain.pojo.SysMenu;
import com.quick.sys.domain.search.SysMenuSearch;
import com.quick.sys.domain.vo.MenuTreeVo;
import com.quick.sys.domain.vo.SysMenuVo;
import com.quick.util.QuickTool;

import java.util.List;

public interface ISysMenuService {
	
	default void queryWrapper(QueryWrapper<SysMenu> queryWrapper, SysMenuSearch search) {
		if(QuickTool.notNull(search.getKey())){
			queryWrapper.lambda().like(SysMenu::getTitle, search.getKey());
		}
		if(QuickTool.notNull(search.getMenuType())){
			queryWrapper.lambda().eq(SysMenu::getMenuType, search.getMenuType());
		}
		if (QuickTool.notNull(search.getParentId())) {
			queryWrapper.lambda().eq(SysMenu::getParentId, search.getParentId());
		}
	}
    /**
     * 	加载菜单树
     * @return
     */
    List<MenuTreeVo> loadMenuTree();
    /**
     * 	加载所有菜单
     * @return
     */
    List<SysMenuVo> loadAllMenu();

    /**
     * 	新增或修改菜单
     * @param sysMenu
     * @return
     */
    Boolean saveOrUpdate(SysMenuDTO sysMenu);

    /**
     * 	获取菜单
     * @param id
     * @return
     */
    SysMenuVo getMenuById(Integer id);

    /**
     * 	删除菜单
     * @param id
     * @return
     */
    Boolean deleteMenu(Integer id);
    /**
     * 	分页查询
     * @param search
     * @return
     */
	Page<SysMenuVo> searchMenu(Search<SysMenuSearch> search);
	/**
	 * 	获取菜单V1
	 * @return
	 */
	List<BaseTree> loadBaseTree();
	/**
	   *    管理员菜单
	 * @return
	 */
	List<MenuTreeVo> loadAdminMenuTree();
}
